from pyspark import SparkConf, SparkContext

if __name__ == '__main__':
    # 构建SparkConf对象
    conf = SparkConf().setAppName("test").setMaster("local[*]")
    # 构建SparkContext执行环境入口对象
    sc = SparkContext(conf=conf)

    rdd = sc.parallelize(range(1, 10), 3)  # 1-9
    # 分组后集合为： [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

    # ret = rdd.glom().collect()
    # print(ret)

    result = rdd.fold(10,lambda a, b: a + b)
    print(result)
    """
    fold: 功能跟reduce类似，区别在于fold是带有初始值的聚合，并且分为
    分区内聚合
    分区间聚合
    
    以上2种聚合都会带上初始值
    """
    # [1, 2, 3] 10 + 6  = 16
    # [4, 5, 6] 10 + 15 = 25
    # [7, 8, 9] 10 + 24 = 34
    # 最终结果为 10 + 16 + 25 + 34 = 85
    # 输出结果 85
